package com.example.music.util;

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

/**
 * Created with IntelliJ IDEA.
 * ClassName: BCy
 * Package: com.example.music.util
 * Description:
 * User: fzykd
 *
 * @Author: LQH
 * Date: 2023-04-13
 * Time: 20:54
 */

public class BCryptTest {
    public static void main(String[] args) {
        //模拟从前端获得的密码
        String password = "123456";
        BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
        String newPassword = bCryptPasswordEncoder.encode(password);
        System.out.println("加密的密码为: "+newPassword);
        //使用matches方法进行密码的校验
        boolean same_password_result = bCryptPasswordEncoder.matches(password,newPassword);
        //返回true
        System.out.println("加密的密码和正确密码对比结果: "+same_password_result);
        boolean other_password_result = bCryptPasswordEncoder.matches("987654",newPassword);
        //返回false
        System.out.println("加密的密码和错误的密码对比结果: " + other_password_result);
        /*
        Bcrypt就是一款加密工具，可以比较方便地实现数据的加密工作。你也可以简单理解为它内部自己实现了随机加盐
        处理 。我们使用MD5加密，每次加密后的密文其实都是一样的，这样就方便了MD5通过大数据的方式进行破解。
        Bcrypt生成的密文是60位的。而MD5的是32位的。Bcrypt破解难度更大。

        他是security框架其中的一类 单用到BCrypt 要在启动类注解 加上
        (exclude ={org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class})
         */

        //S_S++a04150e27ede3876a2f1a96ea4f2049cf6a272950741722576c719eea7bfe6be
        //$2a$10$6W2qTrXqzFz3EKi7c5lVUOirpYOQaMjZoJuLBWO6w51TfpSBxZPJm

    }
}